import java.util.ArrayList;


abstract class Pokemon {
	
	public String nom;
	public int poids;
	
	//constructeur
	public Pokemon(){}
	public Pokemon(String nom, int poids){
		this.nom=nom; this.poids=poids;
	}
	
	public abstract double vitesse();
	public String toString(){
		return "Je suis le Pokemon "+nom+", je pèse "+poids+" kg";
	}
}


abstract class PokemonT extends Pokemon{
	
	public int nbPattes;
	public float taille;
	
	//constructeur
	public PokemonT(){}
	public PokemonT(String nom, int poids, int nbPattes, float taille){
		super(nom, poids);
		this.nbPattes=nbPattes; this.taille=taille;
		
	}
	
	public double vitesse(){
		return nbPattes*taille*3;
	}

	public String toString(){
		return (super.toString() + ", jai "+nbPattes+" pattes"+", je mesure "+taille+" m"+", ma vitesse est de "+this.vitesse()+" km/h");
	}
}

class PokemonS extends PokemonT{
	public int freq;
	
	//constructeur
	public PokemonS(){}
	public PokemonS(String nom, int poids, int nbPattes, float taille, int freq){
		super(nom, poids, nbPattes, taille);
		this.freq=freq;
	}
	
	public String toString(){
		return super.toString() + ", et j'ai une frequence cardiaque de "+freq;
	}	
}

class PokemonC extends PokemonT{
	public int nbH;
	
	//constructeur
	public PokemonC(){};
	public PokemonC(String nom, int poids, int nbPattes, float taille, int nbH){
		super(nom, poids, nbPattes, taille);
		this.nbH=nbH;
	}
	
	public String toString(){
		return super.toString() + ", et je passe "+nbH+" heures devant la televion";
	}
	
}


class PokemonM extends Pokemon{
	public int nbNageoires;
	
	//constructeur
	public PokemonM(){};
	public PokemonM(String nom, int poids, int nbNageoires){
		super (nom, poids);
		this.nbNageoires=nbNageoires;
	}
	
	public double vitesse(){
		return (((float)poids/25)*nbNageoires);
	}
	
	public String toString(){
		return super.toString() + ", et ma vitesse est de "+vitesse()+" km/h";
	}
}

class PokemonCr extends PokemonM{
	
	//constructeur
	public PokemonCr(){};
	public PokemonCr(String nom, int poids, int nbNageoires){
		super(nom, poids, nbNageoires);
	}
	
	public double vitesse(){
		return ((super.vitesse())/2);
	}
}


public class Pokemont {

	public static void main(String[] args) {
		
		PokemonM pika = new PokemonM("Pikapika",25,20);
		PokemonS sala = new PokemonS("Salamechouille",76,2,10,1222);
		
		System.out.println(pika.toString()+"\n");
		System.out.println(sala.toString()+"\n");

		
		ArrayList<Pokemon> po = new ArrayList<Pokemon>();
		CollectionPokemons p = new CollectionPokemons(po);
		po.add(pika);
		po.add(sala);
		
		System.out.println("Vitesse moyenne des Pokemons : "+p.vitesseMoy());
		System.out.println("Vitesse moyenne des Pokemons sportifs: "+p.vitesseMoyenneSportifs());
		
	}

}
